package com.smart.service.util;

import com.smart.service.util.exception.CardException;
import com.smart.service.util.seteB.CardValidator7B;
import com.smart.service.util.seteB.CardValidator7BFactory;

public class UtilCard {
	
	public static final String VISA = "visa";
	public static final String MASTERCARD = "master";
	public static final String AMEX = "amex";
	public static final String DINERS = "dines";
	public static final String SMART = "smart";
	
	public static final String CARTAO_OK = "Cartao válido";
	public static final String CARTAO_ERRO = "Cartão inválido";
	
	public String validate(String bandeira, String numero, String validade)  {
		
		try {
//			 Usando a implementação do exercício 7b
			CardValidator7B validator7B = CardValidator7BFactory.makeCardValidator(bandeira);
			
			validator7B.validate(numero, validade);
		
			//Caso se queira usar a implementação 7a
//			CardValidator7A validator7a = CardValidator7AFactory.makeCardValidator(bandeira);
//		
//			validator7a.validateNumber(numero, validade);
			
		} catch (CardException e) {
			return CARTAO_ERRO;
		}
		
		return CARTAO_OK;
	}
}
